A software developer typically releases a piece of software as a binary file that can be run on a target hardware platform. Such releases may be done to provide a new application, to provide a patch for an existing application, or to support an existing application on a new hardware platform. The software generally is released in binary form for a number of reasons including prevention of unauthorized modification of the software. Binary file versions of the software may also be distributed so that the software can be run on the target hardware platform without having to compile the software. The software developer may also release the binary file in a form capable of running on multiple hardware platforms because end users may be reluctant to upgrade to the latest hardware platform to run the latest software version with the latest features and/or patches. Finally, a developer may release the software in binary form to support users who want to run the same software version on different hardware architectures, e.g., SPARC and X86.
When the same binary file is designed to be run on multiple versions of a hardware architecture, the binary file may not take advantage of all the features of each hardware version (e.g., hardware functionality that provides enhanced software capabilities). The binary file is generally designed to only utilize the hardware/software features available on every version of the architecture supported. Thus, software developers conventionally provide separate binary files for each type of hardware architecture because the binary file format for a given hardware architecture may not run on another hardware architecture.
When a developer has to provide multiple binaries for a software application, the distribution, installation and support of the software application may be more complex than when a single binary for an application is provided that can be installed on multiple hardware platforms. For example, if a user has to select and install the appropriate binary on his or her hardware platform, there is a more complex distribution process because more detailed installation documentation is required and the developer has to support multiple versions of the software.